import {
  initState
} from './state'
import {
  initRender
} from './render'

let uid = 0

export function initMixin(Vue) {
  Vue.prototype._init = function (options) {
    const vm = this
    vm._isVue = true
    vm._uid = uid++
    // 优化内部组件实例化，
    // 因为动态选项合并非常慢，
    // 并且没有任何内部组件选项需要特殊处理。
    if (options && options._isComponent) {
      initInternalComponent(vm, options)
    } else {
      vm.$options = options
    }
    vm._renderproxy = vm
    initRender(vm)
    // callHook(vm,'beforeCreate')
    initState(vm)
    if (vm.$options.el) {
      vm.$mount(vm.$options.el)
    }
  }
}

export function initInternalComponent(vm, options) {}